package cn.com.blueInfo.bpm.person.repository;

import cn.com.blueInfo.bpm.person.entity.OrganizeLevel;
import cn.com.blueInfo.bpm.person.request.OrganizeLevelDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 组织级别 数据服务类
 * @author suxch
 * @since 2025-09-01 19:28:09
 */
public interface OrganizeLevelRepository extends IService<OrganizeLevel> {

    /**
     * 新增组织级别
     * @param organizeLevel 组织级别参数
     */
    Integer createOrganizeLevel(OrganizeLevel organizeLevel);

    /**
     * 批量新增组织级别
     * @param organizeLevelList 组织级别参数列表
     */
    Integer batchCreateOrganizeLevel(List<OrganizeLevel> organizeLevelList);

    /**
     * 删除组织级别
     * @param organizeLevelId 组织级别ID
     */
    Integer deleteOrganizeLevel(Long organizeLevelId);

    /**
     * 批量删除组织级别
     * @param organizeLevelIdList 组织级别ID列表
     */
    Integer batchDeleteOrganizeLevel(List<Long> organizeLevelIdList);

    /**
     * 更新部分组织级别
     * @param organizeLevel 组织级别参数
     */
    Integer updateOrganizeLevelPartial(OrganizeLevel organizeLevel);

    /**
     * 更新全部组织级别
     * @param organizeLevel 组织级别参数
     */
    Integer updateOrganizeLevel(OrganizeLevel organizeLevel);

    /**
     * 查询一条组织级别
     * @param organizeLevelId 组织级别ID
     */
    OrganizeLevel getOrganizeLevelById(Long organizeLevelId);

    /**
     * 分页查询组织级别
     * @param organizeLevelQueryDTO 组织级别参数
     */
    Page<OrganizeLevel> getOrganizeLevelPage(OrganizeLevelDTO.QueryDTO organizeLevelQueryDTO);

    /**
     * 根据条件查询 组织级别 数量
     * @param organizeLevelQueryDTO 组织级别参数
     */
    Long getOrganizeLevelCount(OrganizeLevelDTO.QueryDTO organizeLevelQueryDTO);

    /**
     * 根据条件查询 组织级别
     * @param organizeLevelQueryDTO 组织级别参数
     */
    List<OrganizeLevel> getOrganizeLevelList(OrganizeLevelDTO.QueryDTO organizeLevelQueryDTO);

}
